package com.evenmo.hrms.mapper.oldmapper;

import com.evenmo.hrms.mapper.oldmapper.dynaSqlProvider.UserDynaSqlProvider;
import com.evenmo.hrms.pojo.User;
import org.apache.ibatis.annotations.*;

import java.util.List;
import java.util.Map;

/**
 * UserDao接口
 */
@Mapper
public interface UserMapper {
    /**
     * @param id 查询用户的ID
     * @return 查询到的该ID的用户
     */
    @Select("select * from user where id=#{id}")
    public User selectById(Integer id);


    /**
     * 根据登录名和密码查询用户
     *
     * @param loginName 登录名
     * @param password  登录密码
     * @return 符合条件的用户
     */
    @Select("select * from user where loginName=#{loginName} and password=#{password}")
    public User selectByLoginNameAndPassword(String loginName, String password);


    /**
     * 根据id删除用户
     *
     * @param id 用户id
     * @return 删除的数目
     */
    @Delete("delete from user where id=#{id}")
    public int deleteUserById(Integer id);

    /**
     * 插入用户
     * @param user 用户对象信息
     * @return 插入的数目
     */
    @InsertProvider(type = UserDynaSqlProvider.class,method = "insertUser")
    @Options(keyProperty = "id", useGeneratedKeys = true)
    public int insertUser(User user);




    /**
     * 动态修改用户,条件是用户ID
     * @param user 要修改的用户信息和用户ID
     * @return 被修改的用户数
     */
    @UpdateProvider(type = UserDynaSqlProvider.class,method = "updateUserByParams")
    public int updateUserByParams(User user);


    /**
     * 动态查询
     * @param user 查询信息，用User对象封装
     * @return
     */
    @SelectProvider(type = UserDynaSqlProvider.class,method = "selectUserByParam")
    public List<User> selectUserByParam(User user);
    // 根据参数查询用户总数

    /**
     * 根据参数查询用户总数
     * @param param 查询参数，用Map封装
     * @return 符合条件的用户数
     */
    @SelectProvider(type = UserDynaSqlProvider.class,method = "countByParam")
    
    public int countByParam(Map<String,Object> param);

    /**
     * 查询所有的用户
     * @return 所有的用户列表
     */
    public List<User> selectUsers();
}
